Cross-Domain Request হল ক্লায়েন্ট (ব্রাউজার) থেকে এমন একটি HTTP রিকোয়েস্ট যা একটি ভিন্ন ডোমেইনে পাঠানো হয়। উদাহরণস্বরূপ, যদি আপনার ওয়েব অ্যাপ্লিকেশন https://example.com
থেকে https://api.anotherdomain.com
এ রিকোয়েস্ট পাঠায়, তাহলে এটি একটি Cross-Domain Request।
Same-Origin Policy এর কারণে ব্রাউজার স্বয়ংক্রিয়ভাবে Cross-Domain রিকোয়েস্ট ব্লক করে। এটি ব্রাউজারের একটি সিকিউরিটি ফিচার যা ব্যবহারকারীদের তথ্য রক্ষা করে এবং সাইটগুলোকে একে অপরের ডেটাতে অবৈধভাবে অ্যাক্সেস করা থেকে বাধা দেয়।
JSONP (JavaScript Object Notation with Padding) একটি পুরোনো কিন্তু কার্যকরী পদ্ধতি যা Cross-Domain রিকোয়েস্টের সমস্যা সমাধান করে। এটি Same-Origin Policy কে বাইপাস করতে একটি সৃজনশীল উপায় ব্যবহার করে।
<script>
ট্যাগ ব্যবহার করে যেকোনো ডোমেইন থেকে জাভাস্ক্রিপ্ট লোড করা সম্ভব। এটি Same-Origin Policy এর আওতায় পড়ে না।<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>JSONP Example</title>
</head>
<body>
<h1>JSONP Example</h1>
<button onclick="fetchData()">Fetch Data</button>
<div id="data-container">
<!-- ডেটা এখানে দেখানো হবে -->
</div>
<script>
// Callback function যা JSONP রেসপন্স হ্যান্ডল করবে
function handleResponse(data) {
var container = document.getElementById('data-container');
container.innerHTML = 'Name: ' + data.name + ', Age: ' + data.age;
}
// JSONP রিকোয়েস্ট পাঠানোর ফাংশন
function fetchData() {
var script = document.createElement('script');
script.src = 'https://api.externaldomain.com/getData?callback=handleResponse';
document.body.appendChild(script);
}
</script>
</body>
</html>
handleResponse({
"name": "John Doe",
"age": 30
});
ব্যাখ্যা:
handleResponse
নামের একটি ফাংশন তৈরি করা হয়েছে, যা সার্ভার থেকে প্রাপ্ত ডেটা প্রসেস করে।fetchData()
ফাংশন একটি <script>
ট্যাগ তৈরি করে এবং সেটি ব্রাউজারে যোগ করে, যাতে ব্রাউজার সার্ভার থেকে জাভাস্ক্রিপ্ট কোড লোড করে।বর্তমানে JSONP এর বদলে CORS বেশি ব্যবহৃত হয়, কারণ এটি নিরাপত্তা এবং সিকিউরিটি মেনে Cross-Domain রিকোয়েস্ট করতে সক্ষম। CORS এর মাধ্যমে সার্ভার হেডারে উপযুক্ত কনফিগারেশন করে Cross-Domain রিকোয়েস্ট অনুমতি দেওয়া হয়। এটি JSONP এর ঝুঁকিগুলো এড়িয়ে Ajax এর মাধ্যমে Cross-Domain রিকোয়েস্টের অনুমতি দেয়।